package common

import (
	"github.com/dgrijalva/jwt-go"
)

type Claims struct {
	//Appid string `json:"appid"`
	// recommended having
	//Channels string `json:channels`
	UserId  string `json:"user_id"`
	Type    string `json:"type"`    //类型 ws 使用
	Channel string `json:"channel"` //频道 ws使用"1,2,3,4""
	Expire  int64  `json:"expire"`
	jwt.StandardClaims
}

func TokenAuth(signedToken, secret string) (*Claims, error) {
	token, err := jwt.ParseWithClaims(signedToken, &Claims{}, func(token *jwt.Token) (interface{}, error) {
		return []byte(secret), nil
	})
	if token == nil {
		return nil, err
	}
	claims, ok := token.Claims.(*Claims)
	if ok && token.Valid {
		//fmt.Printf("%v %v", claims.Username, claims.StandardClaims.ExpiresAt)
		//fmt.Println(reflect.TypeOf(claims.StandardClaims.ExpiresAt))
		//return claims.Appid, err
		/*	if claims.Expire<gtime.Second() { //校验过期时间
			return nil, err
		}*/
		return claims, err
	}
	return claims, err
}
